One of the biggest benefits IMS has brought into the mobile networks is the ability to orchestrate multiple terminating voice services, which traditional IN does not allow to. In this scenario, besides IMS executing any terminating services it is necessary to determine, for each call, if the user is roaming abroad so as to charge him properly (regardless of his prepay/post pay character) and apply FreeDivertToVoiceMail service, if required. Solutions to do so fall in 2 categories:
They either use an IN service which is triggered in the circuit network, receives location information and charges & applies FreeDivertToVoiceMail, if the user is abroad, before relaying the call to IMS. This solution does not work properly if any later terminating service modifies the destination of the call; or they use an IMS application server which is triggered as the last IMS service for each call and sends an Any Time Interrogation (ATI) MAP operation to determine the location of the user. This generates a lot of useless ATI traffic since in most cases the user will not be roaming so that the location information will not be needed.
Right now voice calls flows are as follows:
A voice associated to a User Equipment (UE) is described; said User Equipment (UE) is a client of a wireless Communications network. So the flow of a normal operation of a voice service is:                the client dials a destination number establishing a voice call, using the UE,        the voice call is managed by the ISUP reaching a MSS (MSC Server) that triggers a petition of MAP SendRouting Information to the HLR of the destination, namely a destination client,        the HLR returns as response to the SendRoutingInformation a terminating mark of service of IN associated to said client,        the MSS, according said mark, routes the call to an IMS network using an -INVITE-SIP message,        an EI I-CSCF, first node of the IMS network consults the HSSS and then routes the INVITE to the S-CSCF,        after receiving the INVITE message, the S-CSCF downloads a user profile corresponding to the client from the HSS and triggers at least one service previously defined in said HSS (said triggering mainly consists of sending INIVITEs to one or more application servers defined in the user profile of the HSS,        after executing a last service associated to the user profile, if the destination has not changed, said destination is amended by adding a prefix no the client number so the CSCF, after asking the ENUM, may send it to the Circuit Switch network, to a MSS, adding and indication saying that the call does not require terminating services.        after receiving the INVITE, the MSS, sends a MAP SendRoutingInformation petition to the destination client's HLR including a mark of withdrawal of terminating intelligent network services or mark of withdrawal of services,        the HLR, once detected the mark of withdrawal of services, triggers a normal procedure of collection of a Mobile Station Roaming Number (MSRN), interacting with a Visitor Location Register (VLR) where the client UE is allocated and returning said MSRN to the calling MSS in the response to the SendRoutinglnformation,        The MSS routes the call to the MSRN La MSS using the usual procedures established by the ISUP/SS7.Seeing the above posed flow, how can we guarantee that when a user is either on roaming and using a pay-as-you-go service (prepay) a service is triggered to monitor the call and bill it in real time according the visited network, terminating said call when there is not enough credit or the client is reaching a threshold value of the phone charges.        
Nowadays, phone companies provide two feasible solutions to the above mentioned problem. The first solution they are currently using is to forbid, deny or hold back terminating services for prepay users of contract users with bill control services. The second solutions is slightly more complicated and requires the addition of a functionality or implementation in the last services executed in the IMSm, so every single call received by the client triggers a MAP AnyTimeInterrogation (ATI) operation against the client's HLR in order to obtain the MSC address (MSCAddress) and the cell identifier (CellId) where the client is allocated (both are quite relevant since there are maritime Networks which require a special Billings and share MSCs with terrestrial Networks, so the only way to identify said maritime Networks is by means of the Cell Identification when the service detects a MSC which might correspond to a hybrid network (mari-time/terrestrial). It's then possible, with said information, to establish a real-time dialogue with an online billing system (Online Charging System u OCS).
This second option implies sending up to four MAP operations, namely:                <AnyTimeInterrogation> (ATI), from the Server hosting the IMS application to the HLR.        <ProvideSubscriberInformation>, from the HLR to the VLR.        <ProvideSubscriberinformationAck>, from the VLR to the HLR        <AnyTimeInterrogationAck> from the HLR the Server hosting the IMS application, for roaming a non-roaming clients/UEs.        
Taking into account that, currently, billing terminating calls are carried out only when the client is on roaming, and most of the time received calls use the home network, we are now using four MAP operations (which are needless, providing no added value to the voice call) for several voice calls which actually do not require such operations, thus unnecessarily overloading signalling networks.
Therefore, existing solutions either do not work properly or generate a lot of unnecessary traffic.